package reporte.filtros;

/**
 *  Clase de Filtro generico composite que debe cumplir ambas
 *  condiciones de filtro.
 *	@author Octavio Nicolas Pompilio
 *  @param <T>
 *  El tipo de elemento que se filtrara.
 */

public class FiltroAnd<T> extends FiltroNode<T> {

	/**
	 * Constructor del Filtro generico que toma los dos filtros
	 * y les aplicara esa forma logica.
	 * @param ramaIzq
	 * Primer filtro de la composicion.
	 * @param ramaDer
	 * Segundo filtro de la composicion.
	 */
	public FiltroAnd(Filtro<T> ramaIzq, Filtro<T> ramaDer) {
		super(ramaIzq, ramaDer);
	}
	
	@Override
	protected boolean filtro(T elemento) {
		return ramaIzq.filtro(elemento) && ramaDer.filtro(elemento);
	}

}
